package com.jrx.anytxn.param.service.partner;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.partner.PmPartnerInfoRep;
import com.jrx.anytxn.param.dto.partner.PmPartnerInfoRes;
import com.jrx.anytxn.param.entity.PmPartnerInfo;

import java.util.List;

public interface IPmPartnerInfoService {

    /**
     * 通过合作伙伴ID和租户ID查询
     * @param tenantId
     * @param partnerId
     * @return
     * @throws TxnException
     */
    PmPartnerInfoRes getByTenIdIdAndPartnerId(String tenantId, String partnerId) throws TxnException;

    /**
     * 添加合作伙伴信息
     * @param pmPartnerInfoRep
     * @return
     * @throws TxnException
     */
    PmPartnerInfoRes addPartnerInfo(PmPartnerInfoRep pmPartnerInfoRep) throws TxnException;

    /**
     * 根据租户ID分页查询合作伙伴信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return TxnPage<PmPartnerInfoRes>
     */
    TxnPage<PmPartnerInfoRes> findAllPageByTenantId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 获取所有合作伙伴信息
     * @param tenantId
     * @return
     */
    List<PmPartnerInfoRes> findAllByTenId(String tenantId);

    /**
     * 根据租户ID和合作伙伴编号修改
     * @param pmPartnerInfoRep
     * @return
     * @throws TxnBizException
     */
    PmPartnerInfoRes modifyPmPartnerInfo(PmPartnerInfoRep pmPartnerInfoRep) throws TxnBizException;

    /**
     * 根据租户ID和合作伙伴编号删除信息
     * @param tenantId
     * @param partnerId
     * @return
     * @throws TxnBizException
     */
    Boolean removeByTenantIdAndPartnerId(String tenantId, String partnerId) throws TxnBizException;


    /**
     * 通过合作伙伴ID和租户ID查询
     * 供api接口使用 页面调用不可使用该方法
     *
     * @param tenantId
     * @param partnerId
     * @return
     * @throws TxnException
     */
    PmPartnerInfo getByPartnerId(String tenantId, String partnerId) throws TxnBizException;
}
